iT邦幫忙

2023 iThome 鐵人賽

DAY 25
0
Cloud Native

docker系列 第 25

Day25 ConfigMap & Secret

  • 分享至 

  • xImage
  •  

接下來,我們來設定一些比較基礎且設定一次就不太需要再改的東西,例如 ConfigMap 和 Secret。為什麼叫 ConfigMap 而不是 Config 呢?因為 Kubernetes 本來就是透過 Config 來設定一些東西,所以只好改叫 ConfigMap。

首先,讓我們談談 ConfigMap 的使用。如果只是一些暫時性、少量的設定,我們可以直接使用指令來生成:

kubectl create configmap <configmap_name> --from-literal=key=value ...
# 範例
kubectl create configmap configmap-test1 --from-literal=hello=world  --from-literal=version=2.1.2

但是如果設定是比較長期的,或者需要處理大量的設定,應該如何呢?這時 Kubernetes 可以透過 YAML 文件的方式生成 ConfigMap。

config.yaml

apiVersion: v1
kind: ConfigMap
metadata:
  name: config-test
data:
  key1: "value1"
  key2: "value2"

然後使用以下指令生成 ConfigMap:

kubectl apply -f <configmap_file_name>
# 範例
kubectl apply -f config.yaml

接下來,我們可以執行以下指令查看 ConfigMap:

kubectl get configmaps
# 或者
kubectl get cm

如果需要了解詳細內容,可以透過以下指令:

kubectl describe configmap <configmap_name>
# 範例
kubectl describe configmap configmap-test

如果需要刪除 ConfigMap,可以使用以下指令:

kubectl delete configmap <configmap_name>
# 範例
kubectl delete configmap configmap-test

講完了 ConfigMap,接下來我們來談談 Secret。雖然在使用上 ConfigMap 和 Secret 差異不大,但還是需要特別說明一下。

首先,Secret 不能使用指令直接生成,必須透過文件生成(據我所知是這樣的)。此外,Secret 的值必須使用 Base64 加密編碼。

在 Linux 下,可以使用以下指令獲取 Base64 編碼後的結果:

echo -n 'value' | base64
# 範例
echo -n 'value1' | base64
> dmFsdWUx

獲取編碼結果後,我們就可以透過以下文件生成 Secret:
secret.yaml

apiVersion: v1
kind: Secret
metadata:
  name: secret-test
data:
  key1: dmFsdWUx
stringData:
  key2: value2

data -> 只接受 base64 編碼
stringdata -> 可接受 plain text,在建立時會自動編碼

然後使用以下指令應用:

kubectl apply -f <secret_file_name>
# 範例
kubectl apply -f secret.yaml

列出 Secrets:

kubectl get secrets

查看詳細資料:

kubectl describe secret <secret_name>
# 範例
kubectl describe secret secret-test

請注意 Secret 不會顯示出值,因此非常適合存儲私密的設定。

如需更詳細的設定,可以參考官方文件的 ConfigMap 部分和 Secret 部分。


上一篇
Day24 Namespace, Label, Annotations
下一篇
Day26 Pod
系列文
docker30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言